// 1.1导入fs
const fs = require("fs");
// 1.2导入path
const path = require("path");

// 定义正则来匹配 <style></style> 和<script></script>
const regStyle = /<style>[\s\S]*<\/style>/
const regScript = /<script>[\s\S]*<\/script>/

// 2.1调用fs.reqdFile()方法读取文件
fs.readFile(path.join(__dirname,'index.html'),'utf8',function(err,data){
    // 2.2 读取文件错误
    if(err){
        return console.log("读取HTML文件错误"+err.message);
    }
    // 2.3 读取文件成功，提前css和js
    resolveCss(data)
    resolveJS(data)
    resolveHTML(data)
})

// 3.1 定义处理css的方法
function resolveCss(data) {
    // 3.2 使用正则提取需要饿内容
    const rl = regStyle.exec(data);
    // console.log(rl[0]);
    // 3.3 将提取出来的css进行字符串的replace替换操作
    const newCss = rl[0].replace("<style>","").replace("</style>",'')
    // console.log(newCss);
    // 3.4 写入到idnex.css中

    fs.writeFile(path.join(__dirname,"index.css"),newCss,function(err){
        if(err) return console.log("写入css样式失败"+err.message);
        console.log("写入css样式成功");
    })

}
// 4.1 定义处理js方法
function resolveJS(data) {
    // 4.2 用正则表达式 提取js
    var js = regScript.exec(data)
    // 4.3 将script替换掉
    // console.log(js);
    var newJs = js[0].replace("<script>",'').replace("</script>",'');
    // console.log(newJs);
    // 4.4 写入index.js文件
    fs.writeFile(path.join(__dirname,'index.js'),newJs,function(err) {
        if(err) return console.log("写入js文件失败"+err.message);
        console.log("写入js文件成功");
    } )
}

// 5.1 定义处理HTML结构文件
function resolveHTML(data) {
    // 5.2 将字符串调用 replace方法，把内嵌的style和script替换成外部引入标签
    const html  = data.replace(regStyle,"<link rel='stylesheet' href='index.css'>").replace(regScript,
        
        '<script src="index.js"></script>')
    //  5.3 将htnl写入到index.html中
    fs.writeFile(path.join(__dirname,"index.html"),html,function(err){
        if(err) return console.log("写入文件失败"+err.message);
        console.log("写入html文件成功");
    })
}
